﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BackusLogic;
using BackusEntity;
using AjaxControlToolkit;
using BackusEntity.BE;
using Backus.Log;

public partial class Core_GestionInnovaciones : System.Web.UI.Page
{
    private const string FORMATO_FECHA = "dd/MM/yyyy";
    private const string CERO = "0";

    InnovacionBL innovacionBL = new InnovacionBL();
    ProcesoBL procesoBL = new ProcesoBL();
    UbigeoBL ubigeoBL = new UbigeoBL();
    UsuarioBL usuarioBL = new UsuarioBL();

    LogManager logManager = new LogManager(System.Configuration.ConfigurationManager.AppSettings["LOG_FILE"].ToString());

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            llenarPaises(ddlPais);
            llenarPaises(ddlPopUpPais);
            llenarProcesos(ddlProceso);
            llenarProcesos(ddlPopUpProceso);
            lbllogin.Text = CERO;
            LogInfo oLogInfo = new LogInfo();
            oLogInfo.Descripcion = "GestionInnovaciones.aspx ";
            oLogInfo.FechaHora = DateTime.Now;
            oLogInfo.NombreProceso = "Cargo Página";
            logManager.FileLog(oLogInfo);
        }
    }

    private void llenarProcesos(DropDownList dropDownList)
    {
        try
        {
            var procesos = procesoBL.obtenerProcesos();
            if (procesos != null)
            {
                dropDownList.DataSource = procesos;
                dropDownList.DataValueField = "idProceso";
                dropDownList.DataTextField = "nombreProceso";
                dropDownList.DataBind();
                var item = new ListItem();
                item.Value = CERO;
                item.Text = " - Seleccione - ";
                dropDownList.Items.Insert(0, item);
            }
        }
        catch (Exception ex)
        {
            LogInfo oLogInfo = new LogInfo();
            oLogInfo.Descripcion = "GestionInnovaciones.aspx " + ex.Message;
            oLogInfo.FechaHora = DateTime.Now;
            oLogInfo.NombreProceso = "llenarProcesos()";
            logManager.FileLog(oLogInfo);
            mostrarMensaje("Ocurrio un error en el llenado de lista de Procesos.");
        }
    }

    private void llenarPaises(DropDownList dropDownList)
    {
        try
        {
            var paises = ubigeoBL.obtenerPaises();
            if (paises != null)
            {
                dropDownList.DataSource = paises;
                dropDownList.DataTextField = "nombrePais";
                dropDownList.DataValueField = "idPais";
                dropDownList.DataBind();
                var item = new ListItem();
                item.Value = CERO;
                item.Text = " - Seleccione - ";
                dropDownList.Items.Insert(0, item);
            }
        }
        catch (Exception ex)
        {
            LogInfo oLogInfo = new LogInfo();
            oLogInfo.Descripcion = "GestionInnovaciones.aspx " + ex.Message;
            oLogInfo.FechaHora = DateTime.Now;
            oLogInfo.NombreProceso = "llenarPaises()";
            logManager.FileLog(oLogInfo);
            mostrarMensaje("Ocurrio un error en el llenado de lista de Paises.");
        }
    }

    protected void ddlPais_SelectedIndexChanged(object sender, EventArgs e)
    {
        int codigoPais = int.Parse(ddlPais.SelectedValue);
        llenarDireccion(codigoPais, ddlRegion);
    }

    protected void ddlPopUpPais_SelectedIndexChanged(object sender, EventArgs e)
    {
        int codigoPais = int.Parse(ddlPopUpPais.SelectedValue);
        llenarDireccion(codigoPais, ddlPopUpDireccion);
    }

    private void llenarDireccion(int codigoPais, DropDownList dropDownList)
    {
        try
        {
            var direcciones = ubigeoBL.obtenerDireccionPorCodigoPais(codigoPais);
            if (direcciones != null)
            {
                dropDownList.DataSource = direcciones;
                dropDownList.DataTextField = "nombreDireccion";
                dropDownList.DataValueField = "idDireccion";
                dropDownList.DataBind();
                var item = new ListItem();
                item.Value = CERO;
                item.Text = " - Seleccione - ";
                dropDownList.Items.Insert(0, item);
            }
        }
        catch (Exception ex)
        {
            LogInfo oLogInfo = new LogInfo();
            oLogInfo.Descripcion = "GestionInnovaciones.aspx " + ex.Message;
            oLogInfo.FechaHora = DateTime.Now;
            oLogInfo.NombreProceso = "llenarDireccion()";
            logManager.FileLog(oLogInfo);
            mostrarMensaje("Ocurrio un error en el llenado de lista de Dirección.");
        }
    }

    protected void ddlRegion_SelectedIndexChanged(object sender, EventArgs e)
    {
        int codigoRegion = int.Parse(ddlRegion.SelectedValue);
        llenarCentro(codigoRegion, ddlCentroDistribucion);
    }

    protected void ddlPopUpRegion_SelectedIndexChanged(object sender, EventArgs e)
    {
        int codigoRegion = int.Parse(ddlPopUpDireccion.SelectedValue);
        llenarCentro(codigoRegion, ddlPopUpCentro);
    }

    private void llenarCentro(int codigoRegion, DropDownList dropDownList)
    {
        try
        {
            var centros = ubigeoBL.obtenerCentroPorCodigoDireccion(codigoRegion);
            if (centros != null)
            {
                dropDownList.DataSource = centros;
                dropDownList.DataTextField = "nombreCentro";
                dropDownList.DataValueField = "idCentro";
                dropDownList.DataBind();
                var item = new ListItem();
                item.Value = CERO;
                item.Text = " - Seleccione - ";
                dropDownList.Items.Insert(0, item);
            }
        }
        catch (Exception ex)
        {
            LogInfo oLogInfo = new LogInfo();
            oLogInfo.Descripcion = "GestionInnovaciones.aspx " + ex.Message;
            oLogInfo.FechaHora = DateTime.Now;
            oLogInfo.NombreProceso = "llenarCentro()";
            logManager.FileLog(oLogInfo);
            mostrarMensaje("Ocurrio un error en el llenado de lista de Centros.");
        }
    }

    protected void ddlCentroDistribucion_SelectedIndexChanged(object sender, EventArgs e)
    {
        string codigoCentroDistribucion = ddlCentroDistribucion.SelectedValue.ToString();
        llenarEquipo(codigoCentroDistribucion, ddlEquipo);
    }

    protected void ddlPopUpCentroDistribucion_SelectedIndexChanged(object sender, EventArgs e)
    {
        string codigoCentroDistribucion = ddlPopUpCentro.SelectedValue.ToString();
        llenarEquipo(codigoCentroDistribucion, ddlPopUpEquipo);
    }

    private void llenarEquipo(string codigoCentroDistribucion, DropDownList dropDownList)
    {
        try
        {
            var equipos = ubigeoBL.obtenerEquipoPorCodigoCentro(codigoCentroDistribucion);
            if (equipos != null)
            {
                dropDownList.DataSource = equipos;
                dropDownList.DataTextField = "nombreEquipo";
                dropDownList.DataValueField = "idEquipo";
                dropDownList.DataBind();
                var item = new ListItem();
                item.Value = CERO;
                item.Text = " - Seleccione - ";
                dropDownList.Items.Insert(0, item);
            }
        }
        catch (Exception ex)
        {
            LogInfo oLogInfo = new LogInfo();
            oLogInfo.Descripcion = "GestionInnovaciones.aspx " + ex.Message;
            oLogInfo.FechaHora = DateTime.Now;
            oLogInfo.NombreProceso = "llenarEquipo()";
            logManager.FileLog(oLogInfo);
            mostrarMensaje("Ocurrio un error en el llenado de lista de Equipos.");
        }
    }

    protected void ddlProceso_SelectedIndexChanged(object sender, EventArgs e)
    {
        int codigoProceso = int.Parse(ddlProceso.SelectedValue);
        llenarSubProceso(codigoProceso, ddlSubProceso);
    }

    protected void ddlPopUpProceso_SelectedIndexChanged(object sender, EventArgs e)
    {
        int codigoProceso = int.Parse(ddlPopUpProceso.SelectedValue);
        llenarSubProceso(codigoProceso, ddlPopUpSubProceso);
    }

    private void llenarSubProceso(int codigoProceso, DropDownList dropDownList)
    {
        try
        {
            var subProcesos = procesoBL.obtenerSubProcesoPorProceso(codigoProceso);
            if (subProcesos != null)
            {
                dropDownList.DataSource = subProcesos;
                dropDownList.DataTextField = "nombreSubProceso";
                dropDownList.DataValueField = "idSubProceso";
                dropDownList.DataBind();
                var item = new ListItem();
                item.Value = CERO;
                item.Text = " - Seleccione - ";
                dropDownList.Items.Insert(0, item);
            }
        }
        catch (Exception ex)
        {
            LogInfo oLogInfo = new LogInfo();
            oLogInfo.Descripcion = "GestionInnovaciones.aspx " + ex.Message;
            oLogInfo.FechaHora = DateTime.Now;
            oLogInfo.NombreProceso = "llenarSubProceso()";
            logManager.FileLog(oLogInfo);
            mostrarMensaje("Ocurrio un error en el llenado de lista de SubProcesos.");
        }
    }

    protected void btnCrearIniciativa_Click(object sender, EventArgs e)
    {
        try
        {
            string rutaArchivo = "";
            string archivoValido = "";
            archivoValido = cargarArchivo();
            if (afuArchivoAdjunto.HasFile)
            {
                if (archivoValido == "OK")
                {
                    string ruta_archivo = System.Configuration.ConfigurationManager.AppSettings.Get("RUTA_DOCUMENTO").ToString();
                    string Extension = System.IO.Path.GetExtension(afuArchivoAdjunto.PostedFile.FileName);
                    string strFileName = txtTitulo.Text + "_" + innovacionBL.obtenerIdMaxInnovacion() + Extension;//System.IO.Path.GetFileName(afuArchivoAdjunto.PostedFile.FileName);

                    rutaArchivo = ruta_archivo + strFileName;
                }
            }
            if (archivoValido.Equals("OK"))
            {
                InnovacionBE innovacionBE = new InnovacionBE();
                innovacionBE.idInnovacion = 0;
                innovacionBE.titulo = txtTitulo.Text;
                innovacionBE.login = lbllogin.Text;
                innovacionBE.colaborador = txtDuenioIniciativaSinUsuario.Text;
                innovacionBE.fechaImplementacion = Convert.ToDateTime(txtFechaImplementacion.Text);
                innovacionBE.situacionInicial = txtSituacionActual.Text;
                innovacionBE.solucionPropuesta = txtInnovacion.Text;
                innovacionBE.resultadoLogrado = txtResultados.Text;
                innovacionBE.score = 0;
                innovacionBE.etiqueta = txtEtiquetas.Text;
                innovacionBE.idSubProceso = Convert.ToInt32(ddlSubProceso.SelectedValue);
                innovacionBE.idEquipo = Convert.ToInt32(ddlEquipo.SelectedValue);
                innovacionBE.rutaArchivo = rutaArchivo;
                innovacionBE.idInnovacionReferencia = Convert.ToInt32(lblIdInnovacion.Text);
                int resultado = innovacionBL.registraActualizaInnovacion(innovacionBE);
                if (resultado == 1)
                {
                    limpiarDatos();
                    lblMensajeRegistroInnovacion.Text = "";
                    mostrarMensaje("Innovación guardada exitosamente.");
                }
            }
            else
            {
                lblMensajeRegistroInnovacion.Text = "Solo puede guardar PPT o PPTX";
            }
        }
        catch (Exception ex)
        {
            LogInfo oLogInfo = new LogInfo();
            oLogInfo.Descripcion = "GestionInnovaciones.aspx " + ex.Message;
            oLogInfo.FechaHora = DateTime.Now;
            oLogInfo.NombreProceso = "btnCrearIniciativa_Click()";
            logManager.FileLog(oLogInfo);
            mostrarMensaje("Ocurrio un error al registrar.");
        }
    }

    protected void btnRestablecer_Click(object sender, EventArgs e)
    {
        limpiarDatos();
    }

    protected void btnPopUpBuscarUsuario_Click(object sender, EventArgs e)
    {
        try
        {
            mpeBuscarUsuario.Show();
            string nombre = txtPopUpNombre.Text;
            string apellidoPaterno = txtPopUpApellidoPaterno.Text;
            string apellidoMaterno = txtPopUpApellidoMaterno.Text;

            UsuarioBE usuarioBE = new UsuarioBE();
            usuarioBE.nombre = nombre;
            usuarioBE.apellidoPaterno = apellidoPaterno;
            usuarioBE.apellidoMaterno = apellidoMaterno;
            var usuarios = usuarioBL.obtenerUsuariosPorCriterio(usuarioBE);
            gvPopUpUsuarios.DataSource = usuarios;
            gvPopUpUsuarios.DataBind();
        }
        catch (Exception ex)
        {
            LogInfo oLogInfo = new LogInfo();
            oLogInfo.Descripcion = "GestionInnovaciones.aspx " + ex.Message;
            oLogInfo.FechaHora = DateTime.Now;
            oLogInfo.NombreProceso = "btnPopUpBuscarUsuario_Click()";
            logManager.FileLog(oLogInfo);
            mostrarMensaje("Ocurrio un error al buscar usuario.");
        }
    }

    protected void btnPopUpBuscarInnovacionReferencia_Click(object sender, EventArgs e)
    {
        try
        {
            mpeInnovacionReferencia.Show();
            string palabraClave = txtPopUpPalabraClave.Text;
            int proceso = int.Parse(ddlPopUpProceso.SelectedValue);
            int subProceso = 0;
            if (Convert.ToInt32(ddlPopUpProceso.SelectedValue) > 0)
            {
                subProceso = int.Parse(ddlPopUpSubProceso.SelectedValue);
            }
            string fechaCreacion = txtPopUpFechaCreacion.Text;
            string fechaHasta = txtPopUpHasta.Text;
            int pais = int.Parse(ddlPopUpPais.SelectedValue);
            int direccion = 0;
            int centro = 0;
            int equipo = 0;
            if (Convert.ToInt32(ddlPopUpPais.SelectedValue) > 0)
            {
                direccion = int.Parse(ddlPopUpDireccion.SelectedValue);
                if (Convert.ToInt32(ddlPopUpDireccion.SelectedValue) > 0)
                {
                    centro = int.Parse(ddlPopUpCentro.SelectedValue);
                    if (Convert.ToInt32(ddlPopUpCentro.SelectedValue) > 0)
                    {
                        equipo = int.Parse(ddlPopUpEquipo.SelectedValue);
                    }
                }
            }

            List<InnovacionBE> innovaciones = innovacionBL.obtenerInnovacionesPorCriterio(palabraClave, subProceso, fechaCreacion, fechaHasta, equipo);
            if (innovaciones != null)
            {
                InnovacionDTO innovacion = null;
                List<InnovacionDTO> innovacionesBE = new List<InnovacionDTO>();
                foreach (var inno in innovaciones)
                {
                    innovacion = new InnovacionDTO();
                    innovacion.idInnovacion = inno.idInnovacion;
                    innovacion.titulo = inno.titulo;
                    innovacion.fechaCreacion = Convert.ToDateTime(inno.fechaCreacion).ToString(FORMATO_FECHA);
                    innovacion.idSubProceso = (int)inno.idSubProceso;
                    if (innovacion.idSubProceso > 0)
                    {
                        List<SubProcesoBE> subProcesos = procesoBL.obtenerSubProcesoPorCodigo(innovacion.idSubProceso);
                        innovacion.subProceso = subProcesos[0].nombreSubProceso;
                        if (subProcesos != null && subProcesos.Count > 0)
                        {
                            List<ProcesoBE> procesos = procesoBL.obtenerProcesoPorCodigo((int)subProcesos[0].idProceso);
                            if (procesos != null && procesos.Count > 0)
                            {
                                innovacion.proceso = procesos[0].nombreProceso;
                            }
                        }
                    }
                    innovacion.idEquipo = (int)inno.idEquipo;
                    List<EquipoBE> equipos = ubigeoBL.obtenerEquipoPorCodigo((int)inno.idEquipo);
                    if (equipos != null && equipos.Count > 0)
                    {
                        innovacion.equipo = equipos[0].nombreEquipo;
                    }
                    innovacion.login = inno.login;
                    List<UsuarioBE> usuarios = usuarioBL.obtenerUsuariosPorLogin(innovacion.login);
                    if (usuarios != null && usuarios.ToString().Length > 0)
                    {
                        innovacion.nombreCompleto = usuarios[0].nombre + " " + usuarios[0].apellidoPaterno + " " + usuarios[0].apellidoMaterno;
                    }
                    innovacionesBE.Add(innovacion);
                }
                gvPopUpInnovaciones.DataSource = innovacionesBE;
                gvPopUpInnovaciones.DataBind();
            }
        }
        catch (Exception ex)
        {
            LogInfo oLogInfo = new LogInfo();
            oLogInfo.Descripcion = "GestionInnovaciones.aspx " + ex.Message;
            oLogInfo.FechaHora = DateTime.Now;
            oLogInfo.NombreProceso = "btnPopUpBuscarInnovacionReferencia_Click()";
            logManager.FileLog(oLogInfo);
            mostrarMensaje("Ocurrio un error al buscar innovación.");
        }
    }

    protected void btnCerrarInnovacionReferencia_Click(object sender, EventArgs e)
    {
        mpeInnovacionReferencia.Hide();
    }

    protected void btnCerrarUsuariosRegistrados_Click(object sender, EventArgs e)
    {
        mpeBuscarUsuario.Hide();
    }

    protected void btnPopUpElegirInnovacion_Click(object sender, EventArgs e)
    {
        try
        {
            int contador = 0;
            int rowIndex = 0;
            for (int i = 0; i < gvPopUpInnovaciones.Rows.Count; i++)
            {
                GridViewRow row = gvPopUpInnovaciones.Rows[i];
                bool isChecked = ((CheckBox)row.FindControl("CheckBox1")).Checked;
                if (isChecked)
                {
                    rowIndex = i;
                    contador++;
                }
            }
            if (contador == 1)
            {
                lblIdInnovacion.Text = gvPopUpInnovaciones.Rows[rowIndex].Cells[1].Text;
                txtIniciativaReferencia.Text = gvPopUpInnovaciones.Rows[rowIndex].Cells[2].Text;
                mpeInnovacionReferencia.Hide();
                limpiarDatosInnovacionReferencia();
            }
            else
            {
                mpeInnovacionReferencia.Show();
                lblMensajeInnovacion.Text = "Solo debe de seleccionar una Innovación.";
            }
        }
        catch (Exception ex)
        {
            LogInfo oLogInfo = new LogInfo();
            oLogInfo.Descripcion = "GestionInnovaciones.aspx " + ex.Message;
            oLogInfo.FechaHora = DateTime.Now;
            oLogInfo.NombreProceso = "btnPopUpElegirInnovacion_Click()";
            logManager.FileLog(oLogInfo);
            mostrarMensaje("Ocurrio un error al elegir innovación.");
        }
    }

    protected void btnPopUpElegirUsuario_Click(object sender, EventArgs e)
    {
        int contador = 0;
        int rowIndex = 0;
        for (int i = 0; i < gvPopUpUsuarios.Rows.Count; i++)
        {
            GridViewRow row = gvPopUpUsuarios.Rows[i];
            bool isChecked = ((CheckBox)row.FindControl("CheckBox1")).Checked;
            if (isChecked)
            {
                rowIndex = i;
                contador++;
            }
        }
        if (contador == 1)
        {
            lbllogin.Text = gvPopUpUsuarios.Rows[rowIndex].Cells[1].Text;
            txtDuenioIniciativaUsuario.Text = gvPopUpUsuarios.Rows[rowIndex].Cells[2].Text + " " + gvPopUpUsuarios.Rows[rowIndex].Cells[3].Text + " " + gvPopUpUsuarios.Rows[rowIndex].Cells[4].Text;
            mpeBuscarUsuario.Hide();
            limpiarDatosUsuariosRegistrados();
        }
        else
        {
            mpeBuscarUsuario.Show();
            lblMensajeUsuario.Text = "Solo debe de seleccionar un usuario.";
        }
    }

    protected void btnPopUpCancelarInnovacion_Click(object sender, EventArgs e)
    {
        mpeInnovacionReferencia.Hide();
    }

    protected void btnPopUpCancelarUsuario_Click(object sender, EventArgs e)
    {
        mpeBuscarUsuario.Hide();
    }

    protected void btnPopUpRestablecerInnovacionReferencia_Click(object sender, EventArgs e)
    {
        limpiarDatosInnovacionReferencia();
    }

    private void limpiarDatosInnovacionReferencia()
    {
        txtPopUpPalabraClave.Text = "";
        ddlPopUpProceso.SelectedIndex = -1;
        ddlPopUpSubProceso.SelectedIndex = -1;
        ddlPopUpSubProceso.Items.Clear();
        txtPopUpFechaCreacion.Text = "";
        txtPopUpHasta.Text = "";
        ddlPopUpPais.SelectedIndex = -1;
        ddlPopUpDireccion.SelectedIndex = -1;
        ddlPopUpDireccion.Items.Clear();
        ddlPopUpCentro.SelectedIndex = -1;
        ddlPopUpCentro.Items.Clear();
        ddlPopUpEquipo.SelectedIndex = -1;
        ddlPopUpEquipo.Items.Clear();
        gvPopUpInnovaciones.DataSource = null;
        gvPopUpInnovaciones.DataBind();
    }

    private void limpiarDatos()
    {
        txtTitulo.Text = "";
        txtFechaImplementacion.Text = "";
        txtIniciativaReferencia.Text = "";
        ddlPais.SelectedIndex = -1;
        ddlRegion.SelectedIndex = -1;
        ddlRegion.Items.Clear();
        ddlCentroDistribucion.SelectedIndex = -1;
        ddlCentroDistribucion.Items.Clear();
        ddlEquipo.SelectedIndex = -1;
        ddlEquipo.Items.Clear();
        txtDuenioIniciativaUsuario.Text = "";
        txtDuenioIniciativaSinUsuario.Text = "";
        txtSituacionActual.Text = "";
        txtInnovacion.Text = "";
        txtResultados.Text = "";
        ddlProceso.SelectedIndex = -1;
        ddlSubProceso.SelectedIndex = -1;
        ddlSubProceso.Items.Clear();
        txtEtiquetas.Text = "";
        afuArchivoAdjunto.Attributes.Clear();
        afuArchivoAdjunto.Dispose();
    }

    private void limpiarDatosUsuariosRegistrados()
    {
        txtPopUpNombre.Text = "";
        txtPopUpApellidoPaterno.Text = "";
        txtPopUpApellidoMaterno.Text = "";
        gvPopUpUsuarios.DataSource = null;
        gvPopUpUsuarios.DataBind();
    }

    private String cargarArchivo()
    {
        string ruta_archivo = "";
        string strFileName = "";
        string Extension = "";

        ruta_archivo = Server.MapPath(System.Configuration.ConfigurationManager.AppSettings.Get("RUTA_DOCUMENTO"));
        Extension = System.IO.Path.GetExtension(afuArchivoAdjunto.PostedFile.FileName);
        strFileName = txtTitulo.Text + "_" + innovacionBL.obtenerIdMaxInnovacion() + Extension;
        string[] extensionesValidas = System.Configuration.ConfigurationManager.AppSettings.Get("ARCHIVOS_VALIDOS").ToUpper().Split('|');

        if (!extensionesValidas.Contains(Extension.ToUpper()))
        {
            lblMensajeRegistroInnovacion.Text = "Solo puede guardar PPT o PPTX";
            return "ERROR";
        }

        Int32 MBMax = 2;
        MBMax = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["MAX_FILESIZE_MB"]);

        int fileSize = afuArchivoAdjunto.PostedFile.ContentLength;
        if (fileSize > (MBMax * 1024 * 1024))
        {
            lblMensajeRegistroInnovacion.Text = "Solo puede adjuntar archivos menores a " + MBMax.ToString() + "MB";
            return "";
        }

        if (System.IO.File.Exists(ruta_archivo + strFileName))
        {
            EliminarArchivo(ruta_archivo + strFileName);
        }
        try
        {
            if (strFileName != "")
            {
                afuArchivoAdjunto.PostedFile.SaveAs(ruta_archivo + strFileName);
            }
        }

        catch (Exception ex)
        {
            lblMensajeRegistroInnovacion.Text = ex.Message;
            return "";
        }
        return "OK";
    }

    private void EliminarArchivo(string _nombrearchivo)
    {
        if (System.IO.File.Exists(_nombrearchivo))
        {
            System.IO.FileAttributes fileat = System.IO.File.GetAttributes(_nombrearchivo);
            if (fileat == System.IO.FileAttributes.ReadOnly)
            {
                System.IO.File.SetAttributes(_nombrearchivo, System.IO.FileAttributes.Normal);
            }
            System.IO.File.Delete(_nombrearchivo);
        }
    }

    protected void gvPopUpInnovaciones_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        gvPopUpInnovaciones.PageIndex = e.NewPageIndex;
        llenarDatosPopUpInnovaciones();
    }

    private void llenarDatosPopUpInnovaciones()
    {
        try
        {
            mpeInnovacionReferencia.Show();
            string palabraClave = txtPopUpPalabraClave.Text;
            int proceso = int.Parse(ddlPopUpProceso.SelectedValue);
            int subProceso = 0;
            if (Convert.ToInt32(ddlPopUpProceso.SelectedValue) > 0)
            {
                subProceso = int.Parse(ddlPopUpSubProceso.SelectedValue);
            }
            string fechaCreacion = txtPopUpFechaCreacion.Text;
            string fechaHasta = txtPopUpHasta.Text;
            int pais = int.Parse(ddlPopUpPais.SelectedValue);
            int direccion = 0;
            int centro = 0;
            int equipo = 0;
            if (Convert.ToInt32(ddlPopUpPais.SelectedValue) > 0)
            {
                direccion = int.Parse(ddlPopUpDireccion.SelectedValue);
                if (Convert.ToInt32(ddlPopUpDireccion.SelectedValue) > 0)
                {
                    centro = int.Parse(ddlPopUpCentro.SelectedValue);
                    if (Convert.ToInt32(ddlPopUpCentro.SelectedValue) > 0)
                    {
                        equipo = int.Parse(ddlPopUpEquipo.SelectedValue);
                    }
                }
            }

            var innovaciones = innovacionBL.obtenerInnovacionesPorCriterio(palabraClave, subProceso, fechaCreacion, fechaHasta, equipo);
            if (innovaciones != null && innovaciones.Count > 0)
            {
                InnovacionDTO innovacion = null;
                List<InnovacionDTO> innovacionesBE = new List<InnovacionDTO>();
                foreach (var inno in innovaciones)
                {
                    innovacion = new InnovacionDTO();
                    innovacion.idInnovacion = inno.idInnovacion;
                    innovacion.titulo = inno.titulo;
                    innovacion.fechaCreacion = Convert.ToDateTime(inno.fechaCreacion).ToString(FORMATO_FECHA);
                    innovacion.idSubProceso = (int)inno.idSubProceso;
                    if (innovacion.idSubProceso > 0)
                    {
                        List<SubProcesoBE> subProcesos = procesoBL.obtenerSubProcesoPorCodigo(innovacion.idSubProceso);
                        innovacion.subProceso = subProcesos[0].nombreSubProceso;
                        if (subProcesos != null && subProcesos.Count > 0)
                        {
                            List<ProcesoBE> procesos = procesoBL.obtenerProcesoPorCodigo((int)subProcesos[0].idProceso);
                            if (procesos != null && procesos.Count > 0)
                            {
                                innovacion.proceso = procesos[0].nombreProceso;
                            }
                        }
                    }
                    innovacion.idEquipo = (int)inno.idEquipo;
                    List<EquipoBE> equipos = ubigeoBL.obtenerEquipoPorCodigo((int)inno.idEquipo);
                    if (equipos != null && equipos.Count > 0)
                    {
                        innovacion.equipo = equipos[0].nombreEquipo;
                    }
                    innovacion.login = inno.login;
                    List<UsuarioBE> usuarios = usuarioBL.obtenerUsuariosPorLogin(innovacion.login);
                    if (usuarios != null && usuarios.ToString().Length > 0)
                    {
                        innovacion.nombreCompleto = usuarios[0].nombre + " " + usuarios[0].apellidoPaterno + " " + usuarios[0].apellidoMaterno;
                    }
                    innovacionesBE.Add(innovacion);
                }
                gvPopUpInnovaciones.DataSource = innovacionesBE;
                gvPopUpInnovaciones.DataBind();
            }
        }
        catch (Exception ex)
        {
            LogInfo oLogInfo = new LogInfo();
            oLogInfo.Descripcion = "GestionInnovaciones.aspx " + ex.Message;
            oLogInfo.FechaHora = DateTime.Now;
            oLogInfo.NombreProceso = "llenarDatosPopUpInnovaciones()";
            logManager.FileLog(oLogInfo);
            mostrarMensaje("Ocurrio un error al llenar innovaciones.");
        }
    }

    protected void gvPopUpUsuarios_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        gvPopUpUsuarios.PageIndex = e.NewPageIndex;
        llenarDatosPopUpUsuarios();
    }

    private void llenarDatosPopUpUsuarios()
    {
        try
        {
            mpeBuscarUsuario.Show();
            string nombre = txtPopUpNombre.Text;
            string apellidoPaterno = txtPopUpApellidoPaterno.Text;
            string apellidoMaterno = txtPopUpApellidoMaterno.Text;

            UsuarioBE usuarioBusqueda = new UsuarioBE();
            usuarioBusqueda.nombre = nombre;
            usuarioBusqueda.apellidoPaterno = apellidoPaterno;
            usuarioBusqueda.apellidoMaterno = apellidoMaterno;

            var usuarios = usuarioBL.obtenerUsuariosPorCriterio(usuarioBusqueda);
            gvPopUpUsuarios.DataSource = usuarios;
            gvPopUpUsuarios.DataBind();
        }
        catch (Exception ex)
        {
            LogInfo oLogInfo = new LogInfo();
            oLogInfo.Descripcion = "GestionInnovaciones.aspx " + ex.Message;
            oLogInfo.FechaHora = DateTime.Now;
            oLogInfo.NombreProceso = "llenarDatosPopUpUsuarios()";
            logManager.FileLog(oLogInfo);
            mostrarMensaje("Ocurrio un error al llenar datos usuarios.");
        }
    }

    private void mostrarMensaje(string mensaje)
    {
        string script = "<script languaje='javascript'>alert('" + mensaje + "');</script>";
        this.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), script);
    }
}